Speech Recognition Language Models

ABSTRACT

Methods, computer program products and systems are described for forming a speech recognition language model. Multiple query-website relationships are determined by identifying websites that are determined to be relevant to queries using one or more search engines. Clusters are identified in the query-website relationships by connecting common queries and connecting common websites. A speech recognition language model is created for a particular website based on at least one of analyzing at queries in a cluster that includes the website or analyzing webpage content of web pages in the cluster that includes the website.

CROSS REFERENCE TO RELATED APPLICATION

This application claims priority to pending U.S. Provisional ApplicationSer. No. 61/289,968, entitled “Multi-Modal Input on an ElectronicDevice”, filed on Dec. 23, 2009, the entire contents of which are herebyincorporated herein by reference, and claims priority to pending U.S.Provisional Application Ser. No. 61/330,219, entitled “Multi-Modal Inputon an Electronic Device”, filed on Apr. 30, 2010, the entire contents ofwhich are hereby incorporated herein by reference.

TECHNICAL FIELD

This document relates to systems and techniques for multi-modal inputinto an electronic device and conversion of spoken input to text.

BACKGROUND

Computer users employ a number of mechanisms to provide input to theircomputing devices. Keyboards are common input devices, and theytypically include single-digit numbers (e.g., in a cellular telephone)each of the letters in the alphabet, and some characters (e.g., inQwerty or Dvorak keyboards). On mobile devices, keyboards are frequently“virtual” in form, and are displayed on a touch screen of a device. Suchkeyboards may be made available to various different applicationsrunning on a device, using a program known as an Input Method Editor, orIME, so that the IME receives the user input and then passes it towhatever application is currently active on the device. An IME can alsotranslate user input, such as when a user enters Roman characters in awritten language like Pinyin, and the IME generates Chinese charactersthat correspond to the typed Pinyin. Where the Pinyin corresponds tomultiple possible characters, the IME can display all such characters,the user can tap the intended character, and the IME can pass thatcharacter to the operating application.

Users of computer devices, and particularly of mobile computing devices,may be constrained in their use of a keyboard. For example, the keyboarditself may be constrained in size because mobile device displays aresmall, so that only a sub-set of relevant characters can be displayed orthe keys may be too small to press accurately. Also, the user may beconstrained, in that they cannot easily type on a keyboard while walkingthrough a crowded airport or driving a car. In such situations, spokeninput may be preferred over typed input. However, speech-to-textconversion or translation typically requires lots of computer processingpower, and mobile devices typically do not have much processing power.Also, such conversion often requires a particular user to “train” thesystem so that it better understands the user's voice and speechpatterns.

SUMMARY

This document describes systems and techniques for multi-modal inputinto an electronic device, including speech input. In one example, anIME that provides keyboard services to a device may also provide forspoken input to the device. Much of the IME services may be unchangedfrom an ordinary IME, but the IME may be augmented to provide forspeech-to-text conversion. Specifically, the IME may take a user inputin whatever form (e.g., typed, spoken, D Pad, etc.) and may convert itto a standard form for presentation to an active application (e.g.,passing characters or other key presses). Applications may subscribe tothe IME's services just as they would subscribe if the IME did notaccept voice input, and the provision of such speech-to-textfunctionality can be transparent to the applications.

A user could choose when to provide typed input and when to providespoken input to the IME. First, the user may be in an application thatrequires input, and may take an appropriate action to invoke the IME(e.g., pressing a particular button or soft key on the device, movingthe device in a certain manner, and the like). A keyboard may beinitially displayed on the user's device, and the user may take anotherappropriate action to indicate that he or she will provide speech input.For example, the user may press a microphone button on the virtualkeyboard, or may make a swipe across the virtual keyboard or anotheraction that is inconsistent with an intent to provide typed input in thevirtual keyboard. At that point, the IME can begin “listening” to thedevice's microphone and after the user has spoken, may passcorresponding text to the application.

In these manners, certain implementations may provide one or morebenefits. For example, speech-to-text functionality may be provided on acomputing device relatively simply, while re-using other IMEfunctionality (e.g., interfaces to applications on a device) that isneeded for keyboard-based IME translation. Use of context-specificlanguage models in the manners discussed above and below may also permitmore accurate conversion of speech to text, regardless of whether thesystem is trained to a particular user. Such context-specificity mayalso be provided automatically and transparently for a user, and at alevel of specificity that is most suited to a particular situation. Forexample, where a user is simply interacting with a web page, thelanguage model for the page may be used, but if the user is interactingwith a form on the page, a more specific language model that is directedto that form or a particular field on the form may be used (with lowerweightings, but higher-than-normal weightings, applied to thepage-specific model).

Particular manners of using public user activity, such as searchactivity, to build contextual language models may also result in thegeneration of accurate models in a convenient manner. Such data may bemade available via natural user activity that is already occurringvoluntarily by the users. Also, the activity may occur in large enoughvolumes to provide enough data needed to generate a complete andaccurate model for many contexts, and in this case, for many web pages.The models may also be updated over time, because the public useractivity occurs continuously over time, so that continuously up-to-datemodels may be provided to users seeking speech-to-text conversionservices.

In general, in one aspect, methods, computer program products andsystems are described for a multi-modal input-method editor. A requestcan be received from a user of an electronic device for anapplication-independent input method editor having written and spokeninput capabilities. That the user intends to provide spoken input to theapplication-independent input method editor can be identified, and thespoken input can be received from the user. The spoken input can beinput to an application executing on the electronic device. The spokeninput can be provided to a remote server. The remote server includes aspeech recognition system configured to recognize text based on thespoken input. Text can be received from the remote server, where thetext represents the spoken input. The text can be provided to theapplication as user input.

In general, in one aspect, methods, computer program products andsystems are described for forming a speech recognition language model.Multiple query-website relationships are determined by identifyingwebsites that are determined to be relevant to queries using one or moresearch engines. Clusters are identified in the query-websiterelationships by connecting common queries and connecting commonwebsites. A speech recognition language model is created for aparticular website based on at least one of analyzing at queries in acluster that includes the website or analyzing webpage content of webpages in the cluster that includes the website.

Implementations of the methods, computer program products and systemscan include one or more of the following features. Determining themultiple query-website relationships can include analyzing searchresults returned by the one or more search engines to the queries.Identifying clusters in the query-website relationships can includeanalyzing a graph of queries and websites at nodes of the graph, thatare connected by edges defined by particular websites that aredetermined to be relevant to particular queries. A website can bedetermined to be relevant to a query if the website is a top n rankedsearch result for the query in a set of ranked search results relevantto the query, wherein n is a predetermined integer (e.g., is a top 10ranked search result).

Creating the speech recognition model for the particular website caninclude creating cluster-based speech recognition models for each ofmultiple clusters, and creating the speech recognition model byinterpolating among cluster-based speech recognition models for clustersthat surround the particular website.

The details of one or more embodiments are set forth in theaccompa-nying drawings and the description below. Other features andadvantages will be apparent from the description and drawings, and fromthe claims.

DESCRIPTION OF DRAWINGS

FIG. 1A is a conceptual diagram of an example system including amulti-modal input method editor.

FIG. 1B is a block diagram of an example system that can be used toimplement the multi-modal input method editor.

FIG. 1C is a block diagram of example software that can be used toimplement the input method editor.

FIG. 2 is a flow chart of an example process for generating text using amulti-modal input method editor.

FIGS. 3A-E show example screen shots of an electronic device including amulti-modal input method editor.

FIG. 4 is a block diagram of an example system for receiving speechinput and training language models to interpret the speech input.

FIG. 5A is a block diagram of queries and associated websites in searchresults

FIG. 5B is a URL showing search terms in a query

FIG. 6 is a block diagram of an example system for recognizing speechinput to a computing device.

FIGS. 7A and 7B show flowcharts of example processes of building aninterpolated language model.

FIG. 8 shows a flowchart of an example process for recognizing text inan utterance.

FIG. 9 shows examples of generic computer devices that may be used toexecute the actions discussed in this document.

FIG. 10 is a block diagram of an example data structure of a languagemodel.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

This document describes techniques and systems that may be used toprovide speech-to-text conversion for a user of a computing device, suchas a smartphone. In certain instances, the speech input may be handledin a manner similar to other input (e.g., typed input) using anapplication such as an IME, where the IME can be switched into modesdepending on the manner that the user chooses to enter data. Wheretransformation of the input is needed, the input may in certaincircumstances be transmitted (either in a raw or converted form) to aserver system remote from the computing device that may be programmed topass a transformed input back to the device, such as by providing textin response to receiving spoken inputs. The computing device may alsoprovide the server system with meta data that is passed with, or atessentially the same time as, the spoken inputs, and the meta data maybe used by the server system to identify a context in which the user isentering the spoken input. The server system may then use that meta datato identify a language model to be used and/or to build a language modelon the fly, such as by dynamically applying particular weightings todifferent language models (which may each be derived from differentinput corpuses).

FIG. 1A is a conceptual diagram of an example system 100 that includes amulti-modal input method editor (IME) 102. In this example, the IME 102is implemented in a mobile electronic device 104, though it should beunderstood that the IME 102 can be implemented in a different electronicdevice, e.g., a PC, laptop computer, PDA, etc. The electronic device 104includes multiple user input devices 106, including a microphone 105 toreceive spoken user input. Other user input mechanisms include akeyboard, which can include a soft or virtual keyboard (e.g., atouchscreen keyboard 108) or a hard or physical keyboard, a mouse, atrackball, and the like. The user input mechanisms 106 are capable ofreceiving spoken input (i.e., by the microphone) and written input(i.e., by the keyboard 108).

The user input can be received by the electronic device 104 for use asinput into one of various applications 110 that can execute on theelectronic device 104, e.g., a web browser, an e-mail application, aword processing application, a contacts book, and/or a calendar. In someimplementations, the user input is an input into a web form on aparticular web page of a particular web site. The IME is generallyapplication-independent, i.e., can be used for most any of theapplications 110.

If the user input is spoken input, i.e., a speech utterance, the spokeninput can be provided to a remote server for conversion to text. Forexample, the speech utterance 111 can be transmitted over the network112 to a remote server 114 that includes a speech service 116 and speechrecognizer system 118. The network 112 can include one or more localarea networks (LANs), a wide area network (WAN), such as the Internet, awireless network, such as a cellular network, or a combination of all ofthe above.

The speech recognizer system 118 can use one or more language models 120to recognize text from the speech utterance. The text 113, which can bea selected best candidate or can be a list of n-best candidates thatcorrespond to the speech utterance, is provided back to the electronicdevice 104 over the network 112. The text 113 can be displayed to theuser on a display 122 of the electronic device 104.

If the text 113 includes a list of n-best candidates, the user 101 canselect a candidate from the list that corresponds to the user's spokeninput, for example, using the keyboard 108 or another input mechanism,such as touching the touch screen over one of the candidates, tonavigate the list and make a selection.

The user can also provide written input, and can provide input using acombination of written and spoken input. For example, the user can begina search query in a web browser by speaking one or more words and canthen add to the query string by typing additional input using thekeyboard 108. The IME 102 can provide the combined user input to therelevant application, i.e., the web browser application in this example.In some implementations, the language that the written input is writtenin can be determined and then provided as a language indicator to theremote server 114. The remote server 114 can use the language indicatorwhen converting the speech utterance 111 to the text 113. For example,by knowing the language in which the speech is spoken, an appropriatelanguage model 120 can be selected for use by the speech recognizer 118.

FIG. 1B is a block diagram of an example system 130 that can be used toimplement a multi-modal IME. The example system 130 can be implemented,for example, in a computer device, such as a personal computer device,or other electronic devices, such as a mobile phone, mobilecommunication device, personal digital assistant (PDA), GlobalPositioning System (GPS) navigation device, and the like.

The example system 130 includes a processing device 132, a first datastore 134, a second data store 136, input devices 138, output devices140, and a network interface 142. A bus system 144, including, forexample, a data bus and a motherboard, can be used to establish andcontrol data communication between the components 132, 134, 136, 138,140 and 142. Other system architectures can also be used.

The processing device 132 can, for example, include one or moremicroprocessors. The first data store 134 can, for example, include arandom access memory storage device, such as a dynamic random accessmemory, or other types of computer-readable medium memory devices. Thesecond data store 136 can, for example, include one or more hard drives,a flash memory, and/or a read only memory, or other types ofcomputer-readable medium memory devices.

The input devices 138 include at least one input device that isconfigured to receive spoken input and at least one input deviceconfigured to receive written input. Example input devices 138 caninclude a microphone, keyboard, a mouse, a stylus, etc., and exampleoutput devices 140 can include a display device, an audio device, etc.The network interface 142 can, for example, include a wired or wirelessnetwork device operable to communicate data to and from a network 146.The network 146 can include one or more local area networks (LANs), awide area network (WAN), such as the Internet, a wireless network, suchas a cellular network, or a combination of all of the above.

In some implementations, the system 130 can include input method editor(IME) code 131 from a data store, such as the data store 136. The inputmethod editor code 131 can be defined by instructions that uponexecution cause the processing device 132 to carry out input methodediting functions. The input method editor code 131 can, for example,include interpreted instructions, such as script instructions, e.g.,JavaScript or ECMAScript instructions, that can be executed in a webbrowser environment. Other implementations can also be used, e.g., astand-alone application, an applet, a plug-in module, etc., for use in auser interface, such as a display that displays user inputs received byuse of keypad mapping for a mobile device or keyboard mapping for amobile device or personal computer.

Execution of the input method editor code 131 generates or launches aninput method editor instance (IMEI) 133. The input method editorinstance 133 facilitates the processing of one or more input methods atthe system 130, during which time the system 130 can receive inputs forcharacters or symbols, such as, for example, spoken or written input.For example, the user can use one or more of the input devices 138,e.g., a microphone for spoken input or a keyboard for written input. Insome implementations, the user input can be Roman characters thatrepresent input in a first writing system, e.g., Pinyin, and the inputmethod editor can convert the input to a second writing system, e.g.,Hanzi terms. In some examples, a Hanzi term can be composed of more thanone Pinyin input.

The first data store 134 and/or the second data store 136 can store anassociation of inputs. Based on a user input, the input method editorinstance 133 can use information in the data store 134 and/or the datastore 136 to identify one or more candidate selections represented bythe input. In some implementations, if more than one candidate selectionis identified, the candidate selections are displayed on an outputdevice 140. For example, if the user input is spoken input, then a listof candidate selections showing written text representations of thespoken input can be presented to the user on the output device 140. Inanother example, if the user input is Pinyin inputs, the user can selectfrom the candidate selections a Hanzi term, for example, that the userdesires to input.

In some implementations, a remote computing system 148 having access tothe system 130 can be used to convert spoken user input to written userinput. For example, the remote system 148 can be a server that providesa speech recognition service via the network 146. One or more speechutterances forming the spoken input can be transmitted to the remotesystem 148 over the network 146. The remote system 148 can determine atext conversion of the spoken input, for example, using a convenientform of speech recognizer system, and transmit the text conversion tothe system 130. The text conversion can be a best candidate for textcorresponding to the spoken input or can be a list of n-best candidateselections for presentation to the user for selection as the input. Inan example implementation, the speech recognizer system can includeHidden Markov Modeling (HMM) encoded in a finite state transducer (FST).Other configurations of speech recognizer can be used by the remotesystem 148.

In some implementations, the remote system 148 can also be used to edita logographic script. For example, the remote system 148 may be a serverthat provides logographic script editing capability via the network 146.In one example, a user can edit a logographic script stored in the datastore 134 and/or the data store 136 using a remote computing system,e.g., a client computer. The system 130 can, for example, select acharacter and receive an input from a user over the network interface142. The processing device 132 can, for example, identify one or morecharacters adjacent to the selected character, and identify one or morecandidate selections based on the received input and the adjacentcharacters. The system 130 can transmit a data communication thatincludes the candidate selections back to the remote computing system.

FIG. 1C includes a block diagram of example software that can be used toimplement an input method editor in FIG. 1B (e.g., IMEI 133). The system160 includes a user interface 162 and software 164. A user 166 canaccess system 160 through the user interface 162. The software 164includes applications 165, IME engine 166, an operating system (OS) 167,a speech recognition system 169 including a language model 168, and adetection engine 170. The operating system 167 is a particular piece ofsoftware that can provide the user interface 162 between the software164 (e.g., applications 165 and IME engine 166) and the user 166.

As shown in FIG. 1C, the speech recognition system 169 and languagemodel 168 are separate from IME engine 166. In particular, the speechrecognition system 169 and language model 168 (which can include two ormore language models) are included within software 164 as a separatesoftware component. Other implementations are possible. For example, thespeech recognition system 169 and language model 168 can be locatedremotely (e.g., at the remote system 148 of FIG. 1B). As anotherexample, the speech recognition system 169 and language model 168 can beincluded within the IME engine 166.

The language model 168 can define one or more language sub-models, eachsub-model tailored to a particular application, or webpage, or webformon a particular webpage, or website, to name a few examples. Eachlanguage sub-model can, for example, define a particular rule set, e.g.,grammar particular to a language, phrase sets, verbals, etc., that canbe used to determine a user's likely intent in entering a set of inputs(e.g., inputs for generating candidates that are translations,transliterations, or other types of phonetic representations). In someimplementations, each language sub-model can also include a user historyof a particular user, e.g., a dictionary of words and phrased often usedby a particular user.

The detection engine 170 includes an input module 172 and can include atiming module 174. The input module 172 can, for example, receive input(e.g., keystrokes representing characters or a speech utterance) toparticular applications 165 and send the received input to the IMEengine 166. In some implementations, the detection engine 170 is acomponent of the IME engine 166.

The detection engine 170 can detect input and determine whether or notto send the input to the IME engine 166. The IME engine 166 can, forexample, be implemented using the input method editor code 131 andassociated data stores 134 and 136, and provide output candidates intext converted from speech to an interface (e.g., user interface 162) asthe input (e.g., speech utterances) is detected, as described withreference to FIGS. 2 and 3A-E below.

The components of system 160 can be communicatively coupled to one ormore of each other. Though the components identified above are describedas being separate or distinct form each other, one or more of thecomponents may be combined in a single system, or to perform a singleprocess or routine. The functional description provided herein includingseparation of responsibility for distinct functions is by way ofexample. Other storage architectures can also be used. In particular,other groupings or other divisions of functional responsibilities can bemade as necessary or in accordance with design preferences. For example,IME engine 166 can perform the functions of detection engine 170. Asanother example, input module 172 and timing module 174 can be combinedinto a single module.

FIG. 2 is a flowchart of an example process 200 for using an inputmethod editor to receive spoken input from a user input device and toprovide written, or textual, input to a corresponding application. Arequest is received from a user for an application-independent inputmethod editor that has written and spoken input capabilities (Step 202).By way of illustrative example, and without limitation, the request canbe received by a mobile electronic device that has a touchscreenkeyboard. Example screenshots from such a mobile electronic device areshown in FIGS. 3A-E. These screenshots can be used to illustrate theexample process 200; however, it should be understood that other devicescan implement the process 200, and the screenshots shown are notintended to be limiting.

FIG. 3A shows a screenshot 300 where a user has selected to activate aweb browser application. Through the web browser application, the userhas selected to navigate to the Google search page at the URLwww.google.com 302. FIG. 3B shows a screen shot 304 with a softtouchscreen keyboard 306 displayed in a lower portion of the displayscreen. For example, the user can touch or tap the screen in the searchquery field 308 to automatically have the keyboard 306 displayed,although other mechanisms can be used to trigger the display of thekeyboard 306. The example keyboard 306 shown includes a microphone key310. An example of a request that can be received from the user includesthe user selecting the microphone key 310. Another example includes theuser selecting a graphical entity, such as a microphone icon or button,displayed next to or in an input field, e.g., in search query field 308.Another example includes the user swiping his/her finger across theinput field, e.g., in a left to right motion, or tapping the inputfield. Yet another example includes the user picking up the device in amanner that is consistent with raising a microphone included in thedevice to the proximity of the user's mouth, which can be detected, forexample, by an accelerometer reading. Other forms of request can bereceived from the user for an application-independent input methodeditor having written and spoken input capabilities, and the above arebut some examples.

A user's intention to provide spoken input to theapplication-independent input method editor is then identified in theprocess (Step 204). For example, receiving a speech utterance from theuser can be used to identify that the user intends to provide spokeninput. In other implementations, receiving the request from the user forthe input method editor with written and spoken input capabilities canalso be used to identify that the user intends to provide spoken input,i.e., the same user action can provide both the request and be used toidentify the user's intention. In some implementations, as shown in thescreenshot 312 in FIG. 3C, a graphical element can be displayed thatprompts the user to speak, such as the microphone graphic 314 and theinstructions “Speak now” 316.

A spoken input, i.e., a speech utterance, is then received from theuser. The user provides the spoken input as input to an application thatis executing on the device (Step 206). The spoken input is provided to aremote server that includes a speech recognition system configured torecognize text based on the spoken input (Step 208). For example,referring again to FIG. 1B, the spoken input can be sent over thenetwork 146 to the remote system 148, where the remote system 148includes a speech recognition system to recognize text from a speechutterance. Because processing the speech to text conversion can takesome time, in some implementations a graphic is displayed to the user toindicate that the process is in progress, such as the “Working” graphic320 shown in the screenshot 322 in FIG. 3D.

Text is then received from the remote server, where the text representsthe spoken input (Step 210). Once the remote server, e.g., remote system148, has processed the speech utterance, the corresponding text is sentback to the user's device and can be displayed for the user. In someimplementations, the best candidate for representation of the speechutterance is selected by the speech recognition system at the remoteserver and provided to the device. However, in some implementations, ann-best list of candidates can be provided and presented to the user forselection of the correct candidate. For example, referring to FIG. 3E, ascreen shot 324 shows a list of suggestions, with the best candidate“the man in the moon” displayed at the top of the list as the defaultselection.

The text, i.e., the spoken input converted to written input, is thenprovided to the application as user input (Step 212). That is, once thecorrect text conversion is selected, if a list of candidates wasprovided, or once the best candidate has been received, if only one wassent from the remote server, the written input can be passed to theapplication as the user input for processing by the application.

In some implementations, a context indicator can be sent with the spokeninput to the remote system for conversion to text. The remote system canuse the context indicator to facilitate the speech-to-text conversion.For example, the context indicator can be used as a basis for selectingan appropriate language model to use by the speech recognition system.The context indicator can specify the context in which the spoken userinput was received. For example, the context indicator can specify aname of a field, e.g., in a web form, the name of the application inwhich the input was received, and/or identify a web page if the userinput was received in a web browser application. As another example, thecontext indicator can include metadata relating to a field in which theuser input was received. For example, the metadata can specify that thefield requires a one-word answer, or a date, or a name, and the like. Insome implementations, the context indicator information can be obtainedby the input method editor from the operating system of the electronicdevice.

The device may pass a sound file (including streaming sound data) of thespoken input to a remote server system, and may take steps to improvethe quality of the speech-to-text conversion. As one example, the devicemay pass information that allows the server system to select a languagemodel that is relatively small in size and is specific to the task thatthe user is currently facing. For example, when applications registerwith the IME, they may provide information about fields into which auser can enter information in the applications. The IME can pass suchinformation to the server system, so that the server system may selectan appropriate language model. For example, if the cursor is in an“address” field of an application, the IME can pass such information tothe server system so that, for example, a user utterance that soundslike “scheet” is interpreted as “street” and not “sweet.”

The language model that is applied may also be a composite of, orinterpolation of, multiple separate language models. The differentmodels may be relatively small models that have been derived from largedata corpuses (e.g., SMS messages and e-mail messages). The models maybe prepared off-line by analyzing such corpuses, and the mixture weightsthat are applied to the models may be generated on-the-fly at run-time,including after data from a particular instance of speech input startsbeing received from a user. The weightings may be a function, forexample, of the field into which a user is currently making an utterance(e.g., the “to” or “from” fields of an email message versus the “body”field of an email message).

The language model may also be chosen more generally, without referenceto a particular input field in which the cursor is located. For example,an application developer may register their application with an appstore, and may indicate the type of application that it is, such as amusic player. Similarly, a server system may have a number oftopic-specific language models that it stores. Thus, if a user of amusic application speaks the word “Heart” or “Hart” (which would not beplain from the spoken word itself), the IME may pass a “music”indication to the server system, so that the application is passed theword “heart,” and the user sees a song list for the female-led rockband. If the media player is a video player, the IME may pass the word“Hart” (assuming there are no great movies or television shows with theword “heart” in their titles) so that the user is shown an index of theepisodes of the iconic detective drama “Hart to Hart.”

When the user is interacting with a web page, such as in a web browser,different context information can be used for selecting the properlanguage model. In particular, the domain or a sub-domain for the pagemay be provided, so that the that the language model will be specific tothe particular type of web site. For example, if the web site is Amazon,then the language model may be one in which “shopping” terms have higherprominence. For example, “product” may have a higher score than“protect” for similar sounds. Such a model may be prepared to bedirected to the site itself (e.g., by analyzing input forms on the site,and analyzing text on the site), or on a category that the site matches.Thus, for example, the same language model may be used for the sitesAmazon.com, Buy.com, and the like.

FIG. 4 is a block diagram of an example system 400 for receiving speechinput and training language models to interpret the speech input. In thesystem 400, users of client devices enter data into text input fields,and a speech server analyzes that data to determine the type of text theusers entered. The speech server builds language models from thisinformation, and uses the language models to recognize speech inputassociated with similar input fields.

Clients 402, such as computers executing a web browser with an optionaltoolbar, can receive text input for web forms. When this input is usedas part of a process to browse to another page, such as typing in asearch field or order form field before pressing a submit button, thetext and destination information can be saved in a toolbar log 404.Clients 406, such as computers and mobile computing devices, can receivetext based web search queries from users. These queries can be resolvedby a web search server (not shown) and the queries and search resultscan be stored in query logs 408. The client 406 can receive text inputto applications, such as an email client, a messaging client, and/or aword processor and spoken input to applications. The text input andtranscriptions of spoken input can be stored in input logs 409.

A speech recognition server 410 can retrieve the data in the toolbarlogs 404, the query logs 408, and/or the input logs 409. A speechrecognition system 412 can group this data into categories orclassifications. The speech recognition system 412 creates a series oflanguage models 414 a-414 n. The language models can contain words,phrases, sentences, etc. from the toolbar logs 404, query logs 408,and/or the input logs 409 based on a particular topic. For example, ifthe language model A 414 a is a language model of British last name, itcan contain “Churchill,” “Bean,” and “Pigou.” In another example, if thelanguage model B 414 b contains technology-related language, it cancontain “object oriented programming,” “reverse polish notation,” and“garbage in, garbage out.”

In some implementations, the speech recognition system 412 can buildinterpolated language models from the language models 414 a-414 n. Forexample, the speech recognition system 412 can use an utterance with aknown text result, and poll the language models 414 a-414 n to determinethe confidence level that each language model 414 a-414 n wouldassociate with the utterance/known text pair. The confidence levelreturned by each language model 414 a-414 n can be used by the speechrecognition system 412 to create an interpolated language model. Forexample, using a test utterance and text of “Mr. Bean writes in reversepolish notation,” the language model A 414 a gives a confidence level of50%, the language model B 414 b give a confidence level of 65%, and theother language models 414 c-414 n give substantially 0% confidencelevels. In this example, the speech recognition system 412 can create aninterpolated language model that heavily weighs the language model A andB 414 a-b. The particular weightings may be equal to or proportional tothe confidence levels, in certain implementations.

A client device 416 can execute an application that accepts text inputand can receive an utterance from a user for that text input. The clientdevice 416 can transmit the utterance, along with the context in whichthe utterance was made or received, to the speech recognition server 410for translation into text. In some implementations, the context in whichan utterance is received is determined by the client device 416 with thefield name or label associated with the text input. For example, someapplications include metadata for an application input field such aspackage name, field number or name, and/or attribute flags (e.g. longsentence, email, street address, etc.). In some applications, a textlabel associated with or displayed near an input box is used todetermine the context.

A speech service 418 can receive the utterance and context. In someimplementations, the speech service 418 can map the context to broadercategories or to the categories of the language models 414 a-414 n. Insome implementations, the speech service 418 can maintain a cache ofutterances and resultant texts, and if a received utterancesubstantially matches a cached utterance, the speech service 418 canreturn the appropriate cached resultant texts.

The speech recognition system 412 uses or creates an interpolatedlanguage model to recognize the text in the utterance. In someimplementations, a single candidate text is identified. In someimplementations, the top n candidates are identified either wherein allcandidates meet a certain confidence threshold, or wherein the top ncandidates are selected.

The text or texts identified by the speech recognition system 412 isreturned to the client 416, where it is, for example, displayed in atext input field that has focus.

Such context-specific language models may be generated in a variety ofways, including by using search information from a public search engine.For example, bi-grams may be made between search queries and web sitesthat are highly relevant to those queries (e.g., are in the list of top10 sites returned to the queries). The queries and sites may then beassigned as nodes in a graph, joined by the relationship between thetwo. Clusters of such relationships may then be identified, and languagemodels may be generated for those clusters. A particular language modelfor a web site may then be generated as a weighted combination of thelanguage models for the clusters around the site in the graph.

FIG. 5A is a block diagram 500 of queries and associated websites insearch results. A group of queries 502 is a collection of examplequeries that can be collected from a browser executing a toolbar. Thequeries can be submitted to a web search engine, and a list of searchresults can be returned. For example, a search for “mike lebeau” canresult in search results including facebook.com and linkedin.com. Asearch for “blink” can result in search results including amazon.com.

The queries and associated websites can be used, for example, indetermining a relationship between queries and related topics orcategories. In this example, if it is known that facebook.com andlinkedin.com are social network websites, it can be determined that thequeries “bill byrne,” “will rusch,” “mike lebeau,” and “brian stope” maybe the names of people. Similarly, if it is known that amazon.com is aretailer with a reputation as a book retailer, it can be determined that“blink” and “great gatsby” may be the names or titles of a retailproducts, perhaps books. Similarly, if a search for “william gibson”returns links to both facebook.com and amazon.com, it can be determinedthat “william gibson” may be an author.

FIG. 5B is a URL showing search terms in a query. The URL in thisexample can be recorded by a web browser executing a toolbar. When auser submits a form via a GET request, the contents of the form can beencoded and logged in the URL parameters. In this example, a search onthe webpage facebook.com can generate the URL shown. The name parameter550, in this example “bill%20byrne”, indicates that “bill byrne” wasentered into a field in a web form.

FIG. 6 is a block diagram of an example system 600 for recognizingspeech input to a computing device. In the system 600, a user entersspeech input to an application via an IME. The speech input is analyzedat a speech recognition server and text is returned to the application.

An application 604 executes on a computing device 602, for example amobile computing device. An input method manager 608 can manage inputmethods that the application 604 accepts, including speech input from auser. A speech IME 610 in the operating system of the computing device602 records speech input and collects context data from an input context612.

Speech IME 160 can transmit the speech input and context to a voice datacenter 614. A speech service front end 616 can receive the speech inputand context and prepare the speech input and context for analysis. Forexample, statistics can be collected, recognition jobs can be createdand sorted, etc. A speech recognition system 618 examines the context,and selects an associated language model from a big table of languagemodels 622. The associated language model in the big table of languagemodels 622 can contain a reference to a language model in a ProdLM 620.The speech recognition system 618 uses the referenced language model inthe ProdLM 620 to analyze the speech input and determine a text string.The text string is returned to the speech input method 610, for exampleby way of the speech service front end 616. The text string can bepresented to the user of the computing device 602, and if approved bythe user, can be sent to the application 604 as text input.

In some implementations, data obtained from web toolbar logs can be usedin determining an interpolated language model. A sample of content ofuser input (e.g., queries) into a web form can be obtained from webtoolbar logs, e.g., in URLs. That is, when a user submits a web form viaa GET request, the content of the user input into fields of the web formcan be encoded and logged in the URL parameters (e.g., as was describedabove in reference to FIG. 5B). A toolbar log can therefore providesample data of what users have input (i.e., typed) into each of thefields of a number of web forms. In some instances, however, the volumeof this data may be too sparse to train a good language model for theweb form. However, for a particular web form a larger training set canbe available if queries of the same category as the queries input intothe particular web form are used. That is, queries that correspond tosearch results having similar websites in the top N search results(where N is an integer, e.g., 10) as each other are probably generallywithin the same category. To group queries by category, clusters in asearch query—search result (website) graph (where queries and websitesare assigned to nodes) can be identified, where an edge between aparticular query node and a particular website node occurs whenever thewebsite appears in the top N results for the particular query. Alanguage model can then be trained per cluster, that is, language modelscan be trained for a category (if a cluster is representative of acategory of queries).

To generate an interpolated language model for a particular web form (orweb site), the interpolated language model can be built using multiplelanguage models formed from a number of clusters. In someimplementations, the multiple language models can be selected asfollows. A sample of user input into the particular web form (i.e.,sample queries) can be obtained, e.g., from a web toolbar log. Forexample, referring again to FIG. 5B, the sample data may be the query“bill byrne” that is input into a web form on the www.facebook.comwebsite, which is also reflected in the graph shown in FIG. 5A. In thisexample, “bill byrne” belongs to a cluster that includes people-orientedwebsites (e.g., facebook.com and linkedin.com) and people names (BillByrne, Will Rusch, Mike Lebeau, Brian Strope and William Gibson). Inthis simple example, the “bill byrne” query belongs to only the peoplenames cluster. However, a query may belong to many clusters. In suchinstances, for the sample queries obtained from the web toolbar data,the K most significant clusters (K is a number/integer) can beidentified and weighted, with the sum of their weights adding to 1.0. Insome implementations, the K most significant clusters can be determinedby counting the number of sample queries (from the web toolbar logsample data) that fall into each cluster and then optimizing the weightsof only the top K clusters. Other techniques to determine the K mostsignificant clusters can be used. The interpolated language model forthe web form can be used to convert a speech input received for a fieldin the form into text. The converted text can be transmitted to anelectronic device that initially received the speech input, ortransmitted elsewhere, to be used as text input for the field in the webform.

FIG. 7A shows a flowchart of an example process 700 of building aninterpolated language model for a website (or a web form of a website).In the process 700, pairs of queries and results are collected, baselanguage models are created, and interpolated language models arecreated.

In step 702, pairs containing web queries and result sites are extractedfrom web search logs. For example, a web browser or web browser add oncan report queries, query result URLs, or search results to a centralrepository. In another example, a web search server can create a log ofsearch terms and website domain names that were returned in response tothose search terms.

In step 704, a cluster bipartite graph, also known as a bigraph, isformed by the pairs. A bipartite graph is a graph whose vertices can bedivided into two disjoint sets such that every edge connects a vertex inthe first set to one in the second set. In some implementations, thefirst set can contain nodes representing queries and the second set cancontain nodes representing results. Clusters are identified in thebipartite graph, for example so that each cluster consists of queriesand results that may by semantically or syntactically similar.

In step 706, language models are trained based on the queries in theclusters. In some implementations, sample utterances are recorded by arange of speakers and associated with the queries. The utterances foreach query can be aggregated, such as by determining an average waveformand a deviation factor indicating how much deviation from the mean wasfound for most utterances.

In step 708, web form sample data is obtained from toolbar logs, the webform sample data relating to the particular web form (or website) forwhich the interpolated language model is being generated (e.g., theinterpolated language model can be for the web form). In someimplementations, a web browser toolbar can record and transmit the URLsof websites visited by the browser. The URLs can include input text(i.e., sample queries) that has been entered into the web form andsubmitted. This information can be used to associate a particularwebsite domain, or web page with a particular topic or idea.

In step 710, the K most significant clusters for the input text, i.e.,the sample queries, obtained from the web form sample data areidentified. A list of cluster names is collected and ranked in order ofsignificance or similarity to the data collected in the step 708. Apredetermined number (K, in this case) of the most significant clustersare identified. For example, clusters are identified that include thesample queries. To limit the number of clusters to K, i.e., to identifythe K most significant, in some implementations, the number of samplequeries that fall into each cluster can be counted and the weightsassigned to each cluster optimized for only the top K clusters.

In step 712, an interpolated language model for the web form (orwebsite) is built. In one example, a data structure is created thatcontains links to the K most significant language models. This datastructure represents a combined language model that delegates speechrecognition functionality to the referenced language models.

In step 714, K interpolation weights are optimized. Each referencedlanguage model can have a weight, such as a percentage, integer in aparticular range, or probability, associated with the referencedlanguage model in the interpolated language model. In someimplementations, this weight can be determined by testing a known pairsof utterances and text. The pairs can be submitted to the referencedlanguage models, which can return a confidence level representing thelikelihood or accuracy of the language model to correctly identify thetext in the utterance. The confidence levels, optionally normalized orotherwise converted, can be used as weighting values in the interpolatedlanguage model. Thus, reference language models likely to correctlyidentify text in a particular classification are most heavily weighted.

Although a particular number, type, and order of steps are shown, itwill be understood by one skilled in the art that other number, types,and orders are possible. For example, other methods of clustering orgraph creation can be used in the step 704. In another example, inputfield flags and descriptions are obtained in the step 708. In anotherexample, step 702 and step 714 can be combined using a process thatbuilds an interpolation model and interpolation weights in one step.

FIG. 7B shows a flowchart of an example process 750 of building aninterpolated language model. In the process 750, text input andassociated metadata is collected, base language models are created, andinterpolated language models are created using the base models andinterpolation factors such as weightings to be provided to each ofmultiple base models.

In step 752, text input and input metadata pairs are extracted frominput logs. For example, an application can report to a centralrepository input entered into an input field and metadata for the inputfield. In some examples, the text input can include voice input that istranscribed into a text format. In some examples, application wide oroperating system wide metadata schemes can define or describe the typeof input field, such as an address field, a free form text field, asearch field, or a social status field.

In step 754, a cluster bipartite graph, also known as a bigraph, isformed by the pairs. A bipartite graph is a graph whose vertices can bedivided into two disjoint sets such that every edge connects a vertex inthe first set to one in the second set. In some implementations, thefirst set can contain nodes representing input metadata and the secondset can contain nodes representing text input. Clusters are identifiedin the bipartite graph, for example so that each cluster consists ofsimilar input metadata.

In step 756, language models are trained based on the text input in theclusters. In some implementations, sample utterances are recorded by arange of speakers and associated with the metadata. The utterances foreach text input can be aggregated, such as by determining an averagewaveform and a deviation factor indicating how much deviation from themean was found for most utterances.

In step 758, input metadata is categorized. The input metadata can beused to associate a particular input field or application with aparticular topic or idea. Example topics or ideas include, but are notlimited to, address fields, free form text fields, search field, socialstatus fields, and numeric fields.

In step 760, the K most significant clusters for a category areidentified. A list of cluster names is collected and ranked in order ofsignificance or similarity to the data collected in the step 758. Apredetermined number (K, in this case) of the most significant clustersare then identified.

In step 762, an interpolated language model is built. In one example, adata structure is created that contains links to the K most significantlanguage models. This data structure represents a combined languagemodel that delegates speech recognition functionality to the referencedlanguage models.

In step 764, K interpolation weights are optimized. Each referencedlanguage model that is referenced in the data structure can have aweight, such as a percentage, integer in a particular range, orprobability, associated with it. In some implementations, this weightcan be determined by testing a known pair or pairs of utterances andtext. The pairs can be submitted to the referenced language models,which can return a confidence level representing the likelihood oraccuracy of the language model to correctly identify the text in theutterance. The confidence levels, optionally normalized or otherwiseconverted, can be used as weighting values in the interpolated languagemodel. Thus, reference language models that are likely to identify textin a particular classification correctly are most heavily weighted.

Although a particular number, type, and order of steps are shown for theprocess in this figure, it will be understood by one skilled in the artthat other number, types, and orders are possible. For example, in step762 and step 764, a data structure with weighted links to the K mostsignificant language models can be selected from a collection of some orall possible data structures with weighted links to language models.

FIG. 8 shows a flowchart of an example process 800 for recognizing textin an utterance. In the process 800, an utterance is received, thespeech in the utterance is recognized, and text, or a list of textoptions, is returned.

In step 802, an utterance is received. For example, a speech recognitionserver can receive translation requests from clients. The translationrequest can include an utterance (e.g. an audio file) and a context(e.g. text or other data describing how the utterance may be used orcategorized).

In step 804, a relevant language model is determined. For example, aninterpolated language model for web search, free form text input, orsocial status can be determined. In some implementations, languagemodels, including interpolated language models, can be indexed bykeyword, web domain, application type, or other criteria. Using metadataassociated with the utterance, such as context or source information, arelevant language model can be determined.

In step 806, speech recognition is performed. The utterance can used bya speech recognition application using the language model. The speechrecognition application can calculate one or more candidate text stringsfrom the utterance. A confidence level can be associated with each textstring.

In step 808, a K-best list of text strings representing the utterance isreturned (where K is an integer). In some implementations, the textstring with the highest confidence value is selected and returned. Insome implementations, a particular number (K, in this case) of textstrings with the highest confidence level are returned.

Although a particular number, type, and order of steps are shown, itwill be understood by one skilled in the art that other number, types,and orders are possible. For example, in step 808, all text strings witha confidence level above a particular threshold can be returned. Inanother example, an utterance can be preprocessed before step 806 toimprove recognition.

FIG. 9 shows an example of a generic computer device 900 and a genericmobile computer device 950, which may be used with the techniquesdescribed here. Computing device 900 is intended to represent variousforms of digital computers, such as laptops, desktops, workstations,personal digital assistants, servers, blade servers, mainframes, andother appropriate computers. Computing device 950 is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smartphones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

Computing device 900 includes a processor 902, memory 904, a storagedevice 906, a high-speed interface 908 connecting to memory 904 andhigh-speed expansion ports 910, and a low speed interface 912 connectingto low speed bus 914 and storage device 906. Each of the components 902,904, 906, 908, 910, and 912, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 902 may process instructions for executionwithin the computing device 900, including instructions stored in thememory 904 or on the storage device 906 to display graphical informationfor a GUI on an external input/output device, such as display 916coupled to high speed interface 908. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices900 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 904 stores information within the computing device 900. Inone implementation, the memory 904 is a volatile memory unit or units.In another implementation, the memory 904 is a non-volatile memory unitor units. The memory 904 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 906 is capable of providing mass storage for thecomputing device 900. In one implementation, the storage device 906 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product may be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 904, the storage device 906,memory on processor 902, or a propagated signal.

The high speed controller 908 manages bandwidth-intensive operations forthe computing device 900, while the low speed controller 912 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 908 iscoupled to memory 904, display 916 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 910, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 912 is coupled to storage device 906 and low-speed expansionport 914. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 900 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 920, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 924. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 922. Alternatively, components from computing device 900 may becombined with other components in a mobile device (not shown), such asdevice 950. Each of such devices may contain one or more of computingdevice 900, 950, and an entire system may be made up of multiplecomputing devices 900, 950 communicating with each other.

Computing device 950 includes a processor 952, memory 964, aninput/output device such as a display 954, a communication interface966, and a transceiver 968, among other components. The device 950 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 950, 952,964, 954, 966, and 968, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 952 may execute instructions within the computing device950, including instructions stored in the memory 964. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 950, such ascontrol of user interfaces, applications run by device 950, and wirelesscommunication by device 950.

Processor 952 may communicate with a user through control interface 958and display interface 956 coupled to a display 954. The display 954 maybe, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display)or an OLED (Organic Light Emitting Diode) display, or other appropriatedisplay technology. The display interface 956 may comprise appropriatecircuitry for driving the display 954 to present graphical and otherinformation to a user. The control interface 958 may receive commandsfrom a user and convert them for submission to the processor 952. Inaddition, an external interface 962 may be provide in communication withprocessor 952, so as to enable near area communication of device 950with other devices. External interface 962 may provide, for example, forwired communication in some implementations, or for wirelesscommunication in other implementations, and multiple interfaces may alsobe used.

The memory 964 stores information within the computing device 950. Thememory 964 may be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 974 may also be provided andconnected to device 950 through expansion interface 972, which mayinclude, for instance, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 974 may provide extra storage space fordevice 950, or may also store applications or other information fordevice 950. Specifically, expansion memory 974 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 974may be provide as a security module for device 950, and may beprogrammed with instructions that permit secure use of device 950. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 964, expansionmemory 974, memory on processor 952, or a propagated signal that may bereceived, for example, over transceiver 968 or external interface 962.

Device 950 may communicate wirelessly through communication interface966, which may include digital signal processing circuitry wherenecessary. Communication interface 966 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 968. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 970 mayprovide additional navigation- and location-related wireless data todevice 950, which may be used as appropriate by applications running ondevice 950.

Device 950 may also communicate audibly using audio codec 960, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 960 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 950. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 950.

The computing device 950 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 980. It may also be implemented as part of asmartphone 982, personal digital assistant, or other similar mobiledevice.

Device 950 may also include one or more different devices that arecapable of sensing motion. Examples include, but are not limited to,accelerometers and compasses. Accelerometers and compasses, or otherdevices that are capable of detecting motion or position are availablefrom any number of vendors and may sense motion in a variety of ways.For example, accelerometers may detect changes in acceleration whilecompasses may detect changes in orientation respective to the magneticNorth or South Pole. These changes in motion may be detected by thedevice 950 and used to update the display of the respective devices 950according to processes and techniques described herein.

Various implementations of the systems and techniques described here maybe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations may include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and may be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here may be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user may provideinput to the computer. Other kinds of devices may be used to provide forinteraction with a user as well; for example, feedback provided to theuser may be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user may bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here may be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usermay interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system may be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system may include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

FIG. 10 is a block diagram of an example data structure 1000 of alanguage model. The data structure 1000 can weightedly link a semanticidea or category with language models, for example, for use in speechrecognition.

A semantic category 1002, such as a search query or type of input field,can be linked to one or more of a collection of interpolated languagemodels 1004. The interpolated language models 1004 can be linked to oneor more base language models 1006. The links between the interpolatedlanguage models 1004 and base language models 1006 can be weighted. Insome examples, the sum of the weights of the links from one interpolatedlanguage model can be 1 or can be normalized to 1.

It will be understood that, although a particular number andconfiguration of interpolated language models 1004, base language models1006, and links are shown, other numbers and conffigurations arepossible. For example, suffieicent interpolated language models 1004 mayexist that every weighted combination of base language models 1006 has alinked interpolated language model 1004. In some examples, interpolatedlanguage model can be linked to more or fewer base language models 1006.In some examples, different link weights between interpolated languagemodels 1004 and base language models 1006 may exist, such as positiveintegers, probabilities, or dimensional distance (e.g. W,X,Y,Z valuesfor four dimensional space.) In some implementations, multiple semanticcategories 1002 can be linked to a single interpolated language model1004.

In some examples, interpolated language models 1004 can be created ondemand, such as when a semantic category 1002 is added to the datastructure. The interpolated language models 1004 can persists after theremoval of semantic categories (not shown). For example, previouslyremoved semantic categories (not shown) may have prompted the creationof the interpolated language models 1004 a, 1004 b, and 1004 c. A newsemantic category 1008 can be added to the data structure 1004, andlinked to any of the interpolated language models 1004.

In some examples, every possible interpolated language model 1004 can bepre-created for use by a new semantic category 1008. Some of theseexamples can be used in situations, such as when many new semanticcategories 1008 are expected, when pre-processing time is available,and/or when few base language models 1006 are expected.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of what is described here.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

1. A computer-implemented method of forming a speech recognitionlanguage model, the method comprising: determining, with a computersystem, a plurality of query-website relationships by identifyingwebsites that are determined to be relevant to queries using one or moresearch engines; identifying clusters in the plurality of query-websiterelationships by connecting common queries and connecting commonwebsites; and creating a speech recognition language model for aparticular website based on at least one of analyzing at queries in acluster that includes the website or analyzing webpage content of webpages in the cluster that includes the website.
 2. The method of claim1, wherein determining the plurality of query-website relationshipscomprises analyzing search results returned by the one or more searchengines to the queries.
 3. The method of claim 1, wherein identifyingclusters in the plurality of query-website relationships comprisesanalyzing a graph comprised of queries and websites at nodes of thegraph, that are connected by edges defined by particular websites thatare determined to be relevant to particular queries.
 4. The method ofclaim 1, wherein a website is determined to be relevant to a query ifthe website is a top n ranked search result for the query in a set ofranked search results relevant to the query, wherein n is apredetermined integer.
 5. The method of claim 1, wherein creating thespeech recognition model for the particular website comprises creatingcluster-based speech recognition models for each of a plurality of theclusters, and creating the speech recognition model by interpolatingamong cluster-based speech recognition models for clusters that surroundthe particular website.
 6. A system for forming speech recognitionlanguage models comprising: a data processing apparatus; and storagecoupled to the data processing apparatus storing code that when executedby the data processing apparatus causes the data processing apparatus toperform operations comprising: determining a plurality of query-websiterelationships by identifying websites that are determined to be relevantto queries using one or more search engines; identifying clusters in theplurality of query-website relationships by connecting common queriesand common websites; and creating a speech recognition language modelfor a particular website by at least one of analyzing queries in acluster that holds the website or analyzing webpage content of web pagesin the cluster that includes the website.
 7. The system of claim 6,wherein determining the plurality of query-website relationshipscomprises analyzing search results returned by the one or more searchengines to the queries.
 8. The system of claim 6, wherein identifyingclusters in the plurality of query-website relationships comprisesanalyzing a graph comprised of queries and websites at nodes of thegraph, that are connected by edges defined by particular websites thatare determined to be relevant to particular queries.
 9. The system ofclaim 6, wherein a website is determined to be relevant to a query ifthe website is a top n ranked search result for the query in a set ofranked search results relevant to the query, wherein n is apredetermined integer.
 10. The system of claim 6, wherein creating thespeech recognition model for the particular website comprises creatingcluster-based speech recognition models for each of a plurality of theclusters, and creating the speech recognition model by interpolatingamong cluster-based speech recognition models for clusters that surroundthe particular website.
 11. A computer-readable storage device encodedwith a computer program product, the computer program product includinginstructions for forming a speech recognition language model that, whenexecuted, cause data processing apparatus to perform operationscomprising: determining a plurality of query-website relationships byidentifying websites that are determined to be relevant to queries usingone or more search engines; identifying clusters in the plurality ofquery-website relationships by connecting common queries and connectingcommon websites; and creating a speech recognition language model for aparticular website based on at least one of analyzing queries in acluster that includes the website or analyzing webpage content of webpages in the cluster that includes the website.
 12. Thecomputer-readable storage device of claim 11, wherein determining theplurality of query-website relationships comprises analyzing searchresults returned by the one or more search engines to the queries. 13.The computer-readable storage device of claim 11, wherein identifyingclusters in the plurality of query-website relationships comprisesanalyzing a graph comprised of queries and websites at nodes of thegraph, that are connected by edges defined by particular websites thatare determined to be relevant to particular queries.
 14. Thecomputer-readable storage device of claim 11, wherein a website isdetermined to be relevant to a query if the website is a top n rankedsearch result for the query in a set of ranked search results relevantto the query, wherein n is a predetermined integer.
 15. Thecomputer-readable storage device of claim 11, wherein creating thespeech recognition model for the particular website comprises creatingcluster-based speech recognition models for each of a plurality of theclusters, and creating the speech recognition model by interpolatingamong cluster-based speech recognition models for clusters that surroundthe particular website.